Skip to content

feat(modulith): implement transactional event publication with postgresql outbox - #376

Merged
rashidi merged 4 commits into
masterfrom
feature/modulith-events
Aug 29, 2026
Merged

feat(modulith): implement transactional event publication with postgresql outbox#376
rashidi merged 4 commits into
masterfrom
feature/modulith-events

Conversation

@rashidi

@rashidi rashidi commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Overview

Adds a new tutorial submodule modulith-events demonstrating how to implement resilient, asynchronous inter-module domain event publication using Spring Modulith's Event Publication Registry and a PostgreSQL transactional outbox.

Key Changes

  • Module Architecture: Structured domain boundaries with @Modulithic for order, inventory, notification, and shared events in common.
  • Durable Outbox: Integrated spring-modulith-starter-jdbc and spring-modulith-events-jdbc to persist unpublished/in-flight events to PostgreSQL upon commit.
  • Asynchronous Consumption: Implemented @ApplicationModuleListener in downstream consumer modules (inventory, notification).
  • Testcontainers Integration:
    • OrderEventPublicationTests: Verified asynchronous completion in the outbox using PostgreSQL Testcontainers with @ServiceConnection and Awaitility.
    • ModulithEventsApplicationTests: Enforced encapsulation and architectural compliance using ApplicationModules.verify().
  • Documentation: Added complete AsciiDoc tutorial under docs/modules/ROOT/pages/modulith-events.adoc and modulith-events/README.adoc, updated root README.adoc and docs/modules/ROOT/nav.adoc.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@rashidi
rashidi force-pushed the feature/modulith-events branch from 4e1b69b to 922414f Compare August 29, 2026 04:13
@sonarqubecloud

Copy link
Copy Markdown

@rashidi
rashidi merged commit 7d975fe into master Aug 29, 2026
7 checks passed
@rashidi
rashidi deleted the feature/modulith-events branch August 29, 2026 04:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant